package registe_router_handle

import (
	"github.com/kataras/iris/v12"
	"goServer/models"
	"time"
)

// return json model part
type forum struct {
	/*
				ForumName string `gorm:"type:varchar(20);not null;"`
				Speaker   string `gorm:"type:varchar(20);not null;"`
				// 宣讲会时间，在数据库中是datatime类型
				ForumTime time.Time `gorm:"type:datetime;not null;"`
				// 宣讲会地点
				ForumPlace string `gorm:"type:varchar(20);not null;"`
				// LogoPath
				LogoPath string `gorm:"type:varchar(20);not null;"`


		rewrite to json model:
	*/
	ForumName string `json:"forum_name"`
	Speaker   string `json:"speaker"`
	// 宣讲会时间，在数据库中是datatime类型
	ForumTime time.Time `json:"forum_time"`
	// 宣讲会地点
	ForumPlace string `json:"forum_place"`
	// LogoPath
	LogoPath     string `json:"logo_path"`
	CompanyName  string `json:"company_name"`
	Introduction string `json:"introduction"`
	Telephone    string `json:"telephone"`
}
type forumsInfo struct {
	ForumsInfo []forum `json:"forums_info"`
}

// init part
func Init_ForumsInfo() {
	// GET localhost:8080/forumsinfo?keyword=xxx
	// 给定关键词，返回所有包含关键词的宣讲会
	RouterHandles = append(RouterHandles, RouterHandle{
		Method: "GET",
		Router: "/forumsinfo",
		Handler: func(ctx iris.Context) {
			keyword := ctx.URLParam("keyword")

			res := forumsFindAll(keyword)

			ctx.ContentType("application/json")
			ctx.JSON(res)
		},
	})
}

// deal data part (return json model)
func forumsFindAll(keyword string) forumsInfo {
	db, err := models.GetDBOnly()
	if err != nil {
		panic(err)
	}

	var forumsInfo forumsInfo

	// 从数据库中查找所有的宣讲会信息
	if keyword == "" {
		// 如果没有关键字，那么就查找所有的宣讲会信息
		db.Raw("SELECT * FROM forums").Scan(&forumsInfo.ForumsInfo)
	} else {
		// 如果有关键字，那么就查找所有符合关键字的宣讲会信息
		db.Raw("SELECT * FROM forums WHERE forum_name LIKE ? OR speaker LIKE ? OR forum_place LIKE ? OR company_name LIKE ?", "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%").Scan(&forumsInfo.ForumsInfo)
	}

	return forumsInfo
}
